//合并两个有序链表
//将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 
//思路二：带头链表（在栈上创建头）

struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
	if (!list1)
		return list2;
	if (!list2)
		return list1;
	struct ListNode newhead;
	struct ListNode* tailNode = &newhead;
	while (list1 && list2) {
		if (list1->val <= list2->val) {
			tailNode->next = list1;
			list1 = list1->next;
		}
		else {
			tailNode->next = list2;
			list2 = list2->next;
		}
		tailNode = tailNode->next;
	}
	tailNode->next = !list1 ? list2 : list1;
	return newhead.next;
}